<html>

	<head>
		<title>6.4.8 模板函数调用</title>
		<meta charset="utf-8" />
		<meta name="author" content="jfinal,yaolin" />
		<meta name="Keywords" content="" />
		<link rel="stylesheet" type="text/css" href="../../css/global.css" />
	</head>

	<body>
		<h1>6.4.8 模板函数调用</h1>
		<p>调用 define 定义的模板函数的格式为： #@name(p1, p2…, pn)，模板函数调用比指令调用 多一个@字符，多出的@字符用来与指令调用区别开来。
		</p>
		<p>此外，模板函数还支持安全调用，格式为： #@name?(p1, p2…, pn)， 安全调用只需在模板函数名后面添加一个问号即可。 <span class="red">安全调用是指当模板函数未定义或者未找到时不做任何操作。</span></p>
		<p>安全调用适合用于一些模板中可有可无的内容部分，以下是一个典型应用示例：</p>
		<img src="../../images/templateEngine/6.4.8.1.png" />
		<p>以上代码示例定义了一个 web 应用的 layout 模板，注意看其中的两处红色箭头指向的就 是模板函数安全调用，该 layout 模板中引入了一个 css 与一个 js 资源文件，这两个文件对于所 有模板都是必须的，但有些模块除了需要这两个资源文件以外，还需要额外的资源文件，那么 就可以通过#define css()与#define js()这两模板函数为该 layout 提供额外的资源，如下是代码示 例：
		</p>
		<img src="../../images/templateEngine/6.4.8.2.png" />
		<p>以上代码中先是通过#@layout()调用了前面定义过的 layout()这个模板函数，而这个模板函 数中又分别调用了#@main()、 #@css?()、 #@js?()这三个模板函数，其中后两个是安全调用，所 以对于不需要额外的 css、 js 文件的模板，则不需要定义这两个方法，安全调用在调用不存在 的模板函数时会直接跳过。
		</p>
	</body>

</html>